package com.kwt.learn.algorithm;


import com.kwt.learn.algorithm.domain.ListNode;

/**
 * 需求：将链表数据反转
 * 链表对象是 @com.kwt.learn.algorithm.domain.ListNode
 * 牛客：https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=188&&tqId=38547&rp=1&ru=/activity/oj&qru=/ta/job-code-high-week/question-ranking
 */
public class Solution06 {
    public static void main(String[] args) {


    }


    /**
     * 反转链表功能
     */
    public ListNode reverseList(ListNode head) {
        /**
         * 反转思路：将头截下，然后作为反转后列表的尾部
         * 4,3,2,1
         * 1,2,3,4
         *
         */
        if (head == null) return null;
        //定义反转后返回的列表对象
        ListNode retNode = null;
        //定义接收去除头部后的列表对象
        ListNode next = null;
        //头节点不为孔
        while (head != null) {
            //将头结点的往后节点都赋值给next变量
            next = head.next;
            //在反转列表前加上一个元素作为反转列表的开始
            head.next = retNode;
            //再将反转后列表赋值给 retNode 变量
            retNode = head;
            //将剩余节点赋值给head，继续下一次循环
            head = next;
        }
        return retNode;


    }
}
